package others;

public class Interview0204 {

    /**
     * 给你一个链表的头节点 head 和一个特定值 x ，请你对链表进行分隔，使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
     *
     * 你不需要保留每个分区中各节点的初始相对位置。
     * 输入：head = [1,4,3,2,5,2], x = 3
     * 输出：[1,2,2,4,3,5]dadada
     */

      public static class ListNode {
          int val;
          ListNode next;
          ListNode(int x) { val = x; }
      }
    public static  ListNode partition(ListNode head, int x) {

        //定义两个空链表，用来存目标链表当前值与目标值对比之后得数据。
        ListNode small = new ListNode(0), big = new ListNode(0);
        ListNode smaller = small, bigger = big;
        //判空
        while (head != null) {
            if (head.val < x) {
                smaller.next = head;
                smaller = smaller.next;
            } else {
                bigger.next = head;
                bigger = bigger.next;
            }
            head = head.next;
        }
        smaller.next = big.next;
        bigger.next = null;
        return small.next;

    }

}
